/**
  * @file    :Queue.hpp
  * @brief   :队列抽象模板类
  * @author  :TMJ
  * @version :V1.0.0
  * @date    :2023-12-27
*/

#ifndef _QUEUE_QUEUE_H_
#define _QUEUE_QUEUE_H_

template<typename type>
class Queue {
public:
    // 入队
    virtual bool EnQueue(const type& data) = 0;

    // 出队(保存数据)
    virtual bool DeQueue(type &data) = 0;

    // 出队(不保存数据)
    virtual bool DeQueue() = 0;

    // 获取队头元素
    virtual bool Front(type &data) const = 0;

    // 判断队空
    virtual bool IsEmpty() const = 0;

    // 获取队列长度
    virtual int Length() const = 0;
};


#endif// _QUEUE_QUEUE_H_